<?php 
  

  function vcode($x_size,$y_size){

  session_start();

     //创建画布资源
  $img=imagecreatetruecolor($x_size, $y_size);

  	//准备颜色
  	//背景颜色
  $background=imagecolorallocate($img, mt_rand(0,255), mt_rand(0,255), mt_rand(0,255));
  //字体颜色
  $font=imagecolorallocate($img,  mt_rand(0,255), mt_rand(0,255),  mt_rand(0,255));
  //干扰素颜色
  $interference=imagecolorallocate($img, mt_rand(0,255),  mt_rand(0,255),  mt_rand(0,255));
    

    //填充画布
  imagefill($img, 0, 0, $background);


  $arr=array_merge(range(0,9),range('a','z'),range('A', 'Z'));//创建三个规定范围的数组，并将其合并成为一个数组


  shuffle($arr);//将数组中的数打乱并重组

  $str=join(' ',array_slice($arr,0,4));//将数组中的前四个数取出并用空格隔开


  $_SESSION['verify']=$str;
          

  //画字
  imagettftext($img, 20/*字体大小*/, 0/*角度*/, 30/*x轴坐标*/,30/*y轴坐标*/, $font/*字体颜色*/, 'msyhbd.ttc'/*字体*/, $str/*内容*/);

  //干扰素

  for($i=0;$i<30;$i++){
       imagesetpixel($img, mt_rand(0,$x_size), mt_rand(0,$y_size), $interference);
  }

  
  //输出最终图像
  header("content-type:image/png");//类型为图片
  imagejpeg($img);//从浏览器输出


  }


 function thumb($src_file,$dist_w,$dist_h,$dir){

  $srcarr=getimagesize($src_file);//获取图片的宽、高、类型等具体信息，此函数可获取图片的宽、高、类型等具体信息，且不需要资源，$srcarr[2]里的值:1为gif,2为jpeg，3为png
   switch ($srcarr[2]) {
     case 1:
       $imagecreatefrom="imagecreatefromgif";//变量函数，把函数名赋给一个变量，则此变量加括号可以当函数使用，imagecreatefromgif()函数为创建画布并载入gif图片作为背景，以下以此类推

       $imageout="imagegif";//imagegif()函数为以gif()的格式输出图像到浏览器或文件
       break;
     case 2:
       $imagecreatefrom="imagecreatefromjpeg";


       $imageout="imagejpeg";
       break;

     case 2:
       $imagecreatefrom="imagecreatefrompng";


       $imageout="imagepng";
       break;
   }

   
   $src_img=$imagecreatefrom($src_file);//创建画布资源并载入图像作为背景



   //等比例计算真实目标资源的宽和高

   $src_w=imagesx($src_img);//获取原图的宽
   $src_h=imagesy($src_img);//获取原图的高


   $scale=($src_w/$dist_w)>($src_h/$dist_h)?($src_w/$dist_w):($src_h/$dist_h);
    //用原图的宽除以目标的宽，原图的高除以目标的高，谁得出的数大就用那个数作为等比例缩小的倍数

   
   $dist_w=floor($src_w/$scale);
   $dist_h=floor($src_h/$scale);
   //用原图的宽高除以倍数得出等比例缩小后的目标宽高，floor()函数是向下取整，500.54取500


   $dist_image=imagecreatetruecolor($dist_w, $dist_h);//创建一个新的画布资源，即用来放缩小后的图片


       //定义参数，从原图的(0,0)坐标开始抠，抠出来后从目标画布的(0,0)坐标开始放
           $dist_x=0;
           $dist_y=0;
           $src_x =0;
           $src_y =0;

      
      imagecopyresampled($dist_image, $src_img, $dist_x, $dist_y, $src_x, $src_y, $dist_w, $dist_h, $src_w, $src_h);//此函数实现图片的缩放

      $t_name='t_'.basename($src_file);//定义新得到图片的名字，basename()函数返回路径中的文件名部分

      // $t_dir=dirname($src_file);//取得原图的目录，dirname()返回文件中的目录部分
      
      $s_file=$dir.'/'.$t_name;//定义存储图片的路径以及图片名

      $imageout($dist_image,$s_file);//输出图像到文件夹

 }









 ?>